package com.controladores.controlvehicular.controlador;
/**
 * Clase que establece una geocerca de acuerdo a la zona de trabajo
 * @author Luis Soto <lsantoniosoto@gmail.com>
 * @author Mariuxi Salinas <mariuxidelcisne@gmail.com>
 * @version 1.0, 11/04/2014 
 */
public class Geocerca {
	
	/**
	 * Comprueba si la ubicación actual de usuario está dentro de la geocerca
	 * @param numeroVertices número de vértices de la geocerca
	 * @param latitudes latitudes de los vértices
	 * @param longitudes longitudes de los vértices
	 * @param posicionLatitud latitud de la ubicación actual del usuario
	 * @param posicionLongitud longitud de la ubicación actual del usuario 
	 * @return boolean verdadero si está dentro de la geocerca, falso en caso contrario
	 */
	public static boolean puntoEnElPoligono(int numeroVertices, double[] latitudes, double[] longitudes, double posicionLatitud, double posicionLongitud) {
        int i, j;
        boolean c = false;
        if(posicionLatitud!=0||posicionLongitud!=0){
        	for (i = 0, j = numeroVertices - 1; i < numeroVertices; j = i++) {
                if (((longitudes[i] > posicionLongitud) != (longitudes[j] > posicionLongitud))
                        && (posicionLatitud < (latitudes[j] - latitudes[i])
                        * (posicionLongitud - longitudes[i])
                        / (longitudes[j] - longitudes[i])
                        + latitudes[i])) {
                    c = !c;
                }
            }        	
        }else{
        	System.out.println("No se obtiene posicion");
        }        
        return c;
 }
	

}
